<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src="https://unpkg.com/vue@next"></script>
  <style>
    body {
      margin: 0;
      padding: 0;
    }

    #app {
      width: 100%;
      height: 100vh;
      background-image: linear-gradient(200deg, #8bd4e4, #7f8bdb);
      display: flex;
      justify-content: center;
      align-items: center;
    }

    .card {
      width: 240px;
      height: 380px;
      background: #fff;
      box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.2);
      border-radius: 10px;
      display: flex;
      flex-direction: column;
      margin-right: 20px;
    }

    .card .content {
      width: 100%;
      flex: 1;
      display: flex;
      flex-direction: column;
      overflow: hidden;
      box-sizing: border-box;
      padding: 20px;
    }
    .card .content .img {
      width: 70px;
      height: 70px;
      margin-bottom: 30px;
      text-align: center;
      margin-left: 65px;
    }

    .card .content .img img {
      width: 100%;
      height: 100%;
      border-radius: 50%;
    }

    .card .content span {
      font-size: 25px;
      margin-bottom: 20px;
    }

    .card .score {
      width: 100%;
      height: 30px;
      background: #eee;
      cursor: pointer;
      transition: all 0.5s;
      border-radius: 0 0 10px 10px;
      display: flex;
      flex-direction: column;
      overflow: hidden;
    }

    .card .score:hover {
      height: 280px;
    }

    .card .score .nav {
      width: 100%;
      height: 30px;
      line-height: 30px;
      background: #6f6c85;
      text-align: center;
    }

    .card .score span {
      margin: 20px 0 0 20px;
    } 

    /* 填报表样式 */
    .input h3{
      text-align: center;
    }
    .input .content{
      padding-top: 0px;
    } 
    .input .btn{
      margin-top: 16px;      
    }
  </style>
</head>

<body>
  <div id="app">
    <div class="card input">
      <h3>学生成绩填报表</h3>
      <div class="content">
        <div class="item">姓名：<input type="text" v-model="newStu.name" /></div>
        <div class="item">性别：<input type="text" v-model="newStu.gender" /></div>
        <div class="item">年龄：<input type="number" v-model="newStu.age" /></div>
        <div class="item">语文：<input type="number" v-model="newStu.yw" /></div>
        <div class="item">数学：<input type="number" v-model="newStu.sx" /></div>
        <div class="item">英语：<input type="number" v-model="newStu.yy" /></div>
        <div class="item"> <input type="button" class="btn" value="提交" @click="sumbit" /></div>       
      </div>
    </div>
    <div class="card" v-for="item in stuData" :key="item.name">
      <div class="content">
        <div class="img">
          <img v-bind:src="item.head" alt="" />
        </div>
        <span>姓名：{{ item.name }}</span>
        <span>年龄：{{ item.age }}</span>
        <span>性别：{{ item.gender }}</span>
        <span>总分：{{ item.yw + item.sx + item.yy }}</span>
      </div>
      <div class="score" v-if="(item.yw >= 60) & (item.sx >= 60) & (item.yy >= 60)">
        <div class="nav">---</div>
        <span>语文：{{ item.yw }}</span>
        <span>数学：{{ item.sx }}</span>
        <span>英语：{{ item.yy }}</span>
      </div>
    </div>
  </div>

  <script>
    const app = {
      data() {
        return {
          newStu: { name: '', age: 0, gender: '', head: '', yw: 0, sx: 0, yy: 0, show: false },
          stuData: [
            {
              name: '张三',
              age: 20,
              gender: '男',
              head: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fup.enterdesk.com%2Fedpic_360_360%2Fc8%2F5d%2F59%2Fc85d595ed206fa63bb7bc7d7d9d17353.jpg&refer=http%3A%2F%2Fup.enterdesk.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1648255399&t=0999eef6cf2f4a0da0f06a37153f3a30',
              yw: 60,
              sx: 100,
              yy: 70,
            },
            {
              name: '李四',
              age: 20,
              gender: '男',
              head: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fup.enterdesk.com%2Fedpic%2F36%2Faf%2F84%2F36af84b51d35d4e560fb92fa065fe1d6.jpg&refer=http%3A%2F%2Fup.enterdesk.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1648255399&t=d24abc41a0a5bc533cf0d8e42257a3c1',
              yw: 50,
              sx: 100,
              yy: 40,
            },
            {
              name: '王五',
              age: 20,
              gender: '男',
              head: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fup.enterdesk.com%2F22%2Fa6%2F5d%2F83%2Fae689318a827319a98788026bb32d99a.jpg&refer=http%3A%2F%2Fup.enterdesk.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1648255399&t=b85a8b7e9a853d96055aab2182fd4379',
              yw: 80,
              sx: 100,
              yy: 60,
            },
          ]
        }
      },methods:{        
        sumbit() {
          if ((this.newStu.name === '') | (!this.newStu.gender === '')) {
            alert('请填写完整！')
            return
          }
          this.stuData.push(this.newStu)
        }
      }
    };
    Vue.createApp(app).mount("#app");
  </script>
</body>

</html>